Dry Run (Deprecated)
DEPRECATED
Dry runs were deprecated on Legacynet on October 10, 2025. This feature is no longer supported. Use exposing process state via HTTP instead for better performance.
DryRun was the process of sending a message object to a specific process and getting the Result object back, but the memory was not saved. It was commonly used to create read messages to return the current value of memory, such as a token balance or transfer result.
Why It Was Deprecated
Dry runs caused several issues:
- Performance bottlenecks in web applications
- High computational overhead for simple state reads
- Poor user experience due to slow response times
- Scalability limitations for applications with frequent state reads
Recommended Alternative: Exposing Process State via HTTP
Use the mechanism for exposing process state via HTTP to provide immediate reading. This provides:
- Dramatically better performance than dry runs
- Direct HTTP access to process data
- Lower computational overhead
- Better user experience for web applications
Legacy Code Example
For reference, here's how dry runs were used:
import { createDataItemSigner, dryrun } from "@permaweb/aoconnect";
const result = await dryrun({
process: "PROCESSID",
data: "",
tags: [{ name: "Action", value: "Balance" }],
anchor: "1234",
// ...rest are optional (Id, Owner, etc)
});
console.log(result.Messages[0]);Migration Path
To migrate from dry runs to state exposure:
- For token processes: Use the state patching mechanism to expose balance data
- For user-owned processes: Provide update handlers that users can trigger (see State Exposure)
- For complex applications: Use dynamic reads for on-the-fly computations
Alternative: Run Your Own HyperBEAM Node
If you must continue using dry runs, you can run your own HyperBEAM node infrastructure. However, state exposure is still recommended for better performance.
Support
For help migrating away from dry runs:
- Review the Migration Guide
- Join the Discord community for support